package br.ufpb.di.ppgi.negocio.iservicos;

import java.util.List;

import br.ufpb.di.ppgi.negocio.modelo.defesa.Defesa;
import br.ufpb.di.ppgi.negocio.modelo.defesa.DefesaStatus;
import br.ufpb.di.ppgi.negocio.modelo.homologacao.defesa.HomologacaoDefesa;
import br.ufpb.di.ppgi.negocio.modelo.proposta.Proposta;
import br.ufpb.di.ppgi.negocio.modelo.usuario.Usuario;
import br.ufpb.di.ppgi.persistencia.pagination.ListaPaginada;

public interface IDefesaService extends IService {

	Defesa buscar(Long id);

	List<Defesa> listar();

	Defesa apagar(Long id);

	Defesa atualizar(Defesa defesa);

	void adicionar(Defesa defesa);

	List<Defesa> listarByUsuarioId(Long id);

	List<Defesa> listarPendencias(Usuario usuario);

	boolean homologar(HomologacaoDefesa homologacao, boolean homologado);

	List<Defesa> listarByStatus(DefesaStatus pendencias);

	Boolean aprovar(Defesa defesa, Boolean aprovado) throws Exception;
	
	Defesa copiarDados(Proposta proposta);

	ListaPaginada<Defesa> filtrarPaginando(String keyword, Integer page,
			String base);

}
